#ifndef GAMEWINDOW_H
#define GAMEWINDOW_H

#include <QObject>
#include <QWidget>
#include <QLabel>
#include <QSoundEffect>
#include<QTimer>
#include<QAnimationGroup>
#include<QPropertyAnimation>
#include<QRandomGenerator>
#include<QEasingCurve>
#include<QMouseEvent>
#include <QMediaPlayer>
#include <QAudioOutput>
#include <QMovie>
#include<QCloseEvent>


QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE


class GameWindow : public QWidget
{
    Q_OBJECT
public:
    explicit GameWindow(QWidget *parent = nullptr);
     ~GameWindow();
protected:
    void mousePressEvent(QMouseEvent *event) override;  // 监听鼠标点击

private:
    QLabel *puppy;  // 用label表示狗
    QMovie *puppyMovie=nullptr;
    QLabel *puppyMessageLabel=nullptr;
    QLabel *backgroundLabel;  // 背景
    QList<QLabel*> raindrops;  // 用QList<QLabel>存储所有雨滴
    int clickCount = 0;  // 用int记录点击次数
    QTimer *rainTimer;  // qtimer：生成雨滴的定时器
private:
    QMediaPlayer *player;
    QAudioOutput *audioOutPut;

public:
    void setBackground(const QString &backgroundPath);
    void playBackGroundMusic(const QString &filepath);//播放音乐
    void createRaindrop();  // 生成雨滴
    void showPuppyMessage();  // show小狗生成文字函数
    void fadeRaindrop(QLabel *raindrop);//雨滴变成星星动画的函数
    void closeEvent(QCloseEvent *event) override;

 signals:
    void gameWindowClosed();

private:
    Ui::Widget *ui;
};

#endif // GAMEWINDOW_H
